草庐IT

【Example】C++ 标准库 std::atomic 及 std::memory_order

全部标签

windows - 在 Win32 GUI 应用程序中使用标准输出 : crashes if I don't have a redirect to file in arguments

我正在构建一个Win32GUI应用程序。在该应用程序中,我使用了一个旨在用于命令行应用程序的DLL。假设Foo.exe是我的GUI应用程序,而bar()是DLL中的一个函数,它将“hello”打印到标准输出。Foo.exe调用bar()。如果我从命令行运行Foo.exe,重定向(>)(即Foo.exe>out.txt),它将“hello”写入out.txt并正常退出(如预期的那样)。但是,如果我运行Foo.exe而不重定向(从cmd.exe或通过在Windows资源管理器中双击),它会在调用bar()时崩溃。如果我在调试器中运行Foo.exe,在命令行中使用重定向(通过项目的VS属性设

c# - 如何显示标准 Windows 数据源 (ODBC) 对话框

有没有什么简单的方法可以从winforms应用程序显示标准的Windows数据源对话框?我想向用户展示它并获取系统dsn或创建一个新的并返回数据源名称。我没有在.net中找到对现有包装器的任何引用,所以我想我只能为此使用winAPI。任何现有的解决方案或代码片段将不胜感激。 最佳答案 似乎无法从此对话框中获取所选数据源名称。这是可用于调用此对话框的winapi函数(link):BOOLSQLManageDataSources(HWNDhwnd);这是一个片段:[DllImport("ODBCCP32.dll",CharSet=Cha

c++ - 如何在 Windows 中重定向 std::cout 和 printf

我已经根据这篇文章创建了程序CreatingaChildProcesswithRedirectedInputandOutput,但它对std::cout和printf不起作用,所以从这样的程序中我得到了一个“你好,妈妈”字符串,而cout和printf部分没有任何结果:int_tmain(intargc,_TCHAR*argv[]){HANDLEhStdOut=GetStdHandle(STD_OUTPUT_HANDLE);constchar*buffer="Hello,momma";std::cout问:我如何拦截cout和printf?我无权访问子程序的源代码,我只需要拦截它的输出

c++ - 如何在 OSX 上通过 vswprintf 格式化宽字符字符串(想要返回 std::wstring)

我需要实现一个函数来格式化宽字符字符串并返回std::wstring。我的实现是:std::wstringformat(constwchar_t*fmt,...){std::wstringret;va_listva;va_start(va,fmt);intsize=vswprintf(nullptr,0,fmt,va);if(size>0){ret.resize(size+1);vswprintf(&ret[0],size+1,fmt,va);}va_end(va);returnret;}它在windows上运行良好,但不幸的是它在osx上不起作用,因为vswprintf(nullpt

.net - "Memory Pressure"是什么意思?

通读TessFerrandez'Blog关于垃圾收集,她说收集有3种可能的原因:Whenyouallocateanewobjectandthegeneration0budgetisreached,i.e.ifthenewobjectwouldcauseittogoover-budget.WhensomeonecallsGC.Collect(InducedGC)Basedonmemorypressure我理解第1点和第2点,但第3点中的内存压力是什么意思?我原以为这是系统中可用的一般内存,但如果系统真的用完了所有内存,那么我想整个系统都会蓝屏。内存压力的实际含义是什么?这与超出一代人的预

c++ - 有标准的文件保存和交换模式吗?

我们的产品在每个打开的文档文件上均具有写排斥文件句柄,以确保我们对该文件具有专有写控制。因此,Windows不允许任何其他进程执行比从文件读取更多的操作,也不能从资源管理器或其他进程删除该文件-因为该文件具有打开(且不包括写操作)的句柄。但是,在一些非常奇怪的情况下(文件内容已损坏),我们一直遇到麻烦。我认为这与bug或可能是我对WindowsAPI保证的误解有关-即为了将设计文件保存在先前版本的顶部-我们目前持有文件句柄-我必须倒带句柄开始文件,将其写出,然后强制其在该新位置冲洗并截断(以防文件缩小-我们不希望文件末尾出现多余污泥-那也将是一种损坏形式))。在session中多次执行

windows - 使用 boost::filesystem::path 作为 std::map 中的键

所以std::map想要对键类型进行排序,但我遇到了问题:"a/b""a/b"如何规范化路径以创建排序?这可能吗?我尝试在自定义比较运算符中使用path::generic_string(),但没有成功。fs::equivalent()也无济于事,因为实现平等对于std::map来说还不够,它需要一个排序。这也是为什么这个问题不是HowdoI"normalize"apathnameusingboost::filesystem?的重复问题的原因。.上下文:仅限Windows,Boost1.49,文件系统3。 最佳答案 要使路径具有可比性

ruby - IO.popen 不工作蹩脚的标准输入和标准输出编码

我一直在使用管道和IO.popen,特别是在Ruby中,遇到了一个我无法弄清楚的问题。我正在尝试将二进制数据从flac进程写入到lame进程到一个文件中。我使用的代码结构如下。#filepathsfile=Pathname.new('example.flac').realpathdest=Pathname.new('example.mp3')#executetheprocessandreturntheIOobjectwav=IO.popen("flac--decode--stdout\"#{file}\"",'rb')lame=IO.popen("lame-V0--vbr-new--"

Python:从多个子进程异步打印标准输出

我正在测试一种从Python2.7中的多个子进程打印出标准输出的方法。我设置的是一个主进程,目前生成三个子进程并吐出它们的输出。每个子进程都是一个for循环,它会随机休眠一段时间,当它醒来时,会说“SleptforXseconds”。我看到的问题是打印输出似乎是同步的。假设子进程A休眠1秒,子进程B休眠3秒,子进程C休眠10秒。主进程在尝试查看子进程C是否有内容时停止了整整10秒,即使其他两个进程可能已经休眠并打印了一些内容。这是为了模拟一个子进程是否真的比其他两个进程在更长的时间内没有输出。我需要一个适用于Windows的解决方案。我的代码如下:主进程.pyimportsysimpo

c++ - 使用平假名将 std::wstring 转换为 QString

我正在尝试将包含平假名的文本从wstring转换为QString,以便它可以用于标签的文本属性。但是,我的代码无法正常工作,我不确定这是为什么。下面的转换方式明显告诉我我做错了:std::wstringmyWString=L"SomeHiragana:あいうえお";ui->label->setText(QString::fromStdWString(myWString));输出:一些平假名:ã‚ã„ã†ãˆãŠ如果我直接把它们放在字符串中,我可以在标签上打印平假名:ui->label->setText("SomeHiragana:あいうえお");输出:一些平假名:あいうえお这意味着我可